
package com.google.api.ads.adwords.jaxws.v201109.cm;

import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;


/**
 * 
 *       Use this service to set targeting options&mdash;filters that determine when
 *       and where ads will display&mdash;for a campaign. A campaign's targeting
 *       options are represented by a series of {@linkplain TargetList target lists},
 *       where each list holds zero or more of the following target types:
 *       <p class="note"><b>Note:</b> As of v201109, only AdScheduleTarget is
 *       available in CampaignTargetService; for all other campaign-level target
 *       types, refer to the {@linkplain CampaignCriterionService.Criterion Criteria}
 *       in {@link CampaignCriterionService}.</p>
 *       <dl>
 *       <dt>{@linkplain AdScheduleTarget} (AdScheduleTargetList)</dt>
 *       <dd>Specifies days and times at which to set a bid multiplier that
 *       increases (if {@code bidMultiplier} > 1), decreases (if {@code bidMultiplier}
 *       &lt; 1), or prevents ({@code bidMultiplier} = 0) the chance of your ads being
 *       displayed. An empty {@link AdScheduleTargetList} means that all days and
 *       times are targeted equally.</dd>
 *       
 *       <dt>{@linkplain AgeTarget}, {@linkplain GenderTarget}
 *       (DemographicTargetList)</dt>
 *       <dd>Specifies gender and age groups for which to set a bid modifier. An
 *       empty {@link DemographicTargetList} means that all demographics are targeted
 *       equally.</dd>
 *       
 *       <dt>{@linkplain CityTarget}, {@linkplain CountryTarget},
 *       {@linkplain MetroTarget}, {@linkplain PolygonTarget},
 *       {@linkplain ProvinceTarget}, {@linkplain ProximityTarget}
 *       (GeoTargetList)</dt>
 *       <dd>Specifies geographic regions to either target or exclude. You can
 *       target or exclude regions of varying granularity. An empty {@link
 *       GeoTargetList} indicates that your ads will be served everywhere.</dd>
 *       
 *       <dt>{@linkplain LanguageTarget} (LanguageTargetList)</dt>
 *       <dd>Specifies languages to target. An empty {@link LanguageTargetList}
 *       indicates that all languages will be targeted.</dd>
 *       
 *       <dt>{@linkplain MobileCarrierTarget}, {@linkplain MobilePlatformTarget}
 *       (MobileTargetList)</dt>
 *       <dd>Specifies mobile carriers or mobile platforms to target. An empty
 *       {@link MobileTargetList} means that all mobile carriers and platforms will be
 *       targeted.</dd>
 *       
 *       <dt>{@linkplain NetworkTarget} (NetworkTargetList)</dt>
 *       <dd>Specifies networks to target (Google Search Network, Google Display
 *       Network, etc.). Unlike other target lists, an empty {@link NetworkTargetList}
 *       means that <em>no</em> networks will be targeted.</dd>
 *       
 *       <dt>{@linkplain PlatformTarget} (PlatformTargetList)</dt>
 *       <dd>Specific which platforms (desktop computers or high-end mobile devices)
 *       to target. An empty {@link PlatformTargetList} means that both will be
 *       targeted.</dd>
 *       </dl>
 *     
 * 
 * This class was generated by the JAX-WS RI.
 * JAX-WS RI 2.2.4-b01
 * Generated source version: 2.2
 * 
 */
@WebService(name = "CampaignTargetServiceInterface", targetNamespace = "https://adwords.google.com/api/adwords/cm/v201109")
@XmlSeeAlso({
    ObjectFactory.class
})
public interface CampaignTargetServiceInterface {


    /**
     * 
     *         Returns the targets for each of the campaigns identified in the campaign target selector.
     *         @param selector a list of campaigns' ids and optional filter of target types.
     *         @return page of lists of the requested campaign targets.
     *         @throws ApiException if problems occurred while fetching campaign targeting information.
     *       
     * 
     * @param selector
     * @return
     *     returns com.google.api.ads.adwords.jaxws.v201109.cm.CampaignTargetPage
     * @throws ApiException_Exception
     */
    @WebMethod
    @WebResult(name = "rval", targetNamespace = "https://adwords.google.com/api/adwords/cm/v201109")
    @RequestWrapper(localName = "get", targetNamespace = "https://adwords.google.com/api/adwords/cm/v201109", className = "com.google.api.ads.adwords.jaxws.v201109.cm.CampaignTargetServiceInterfaceget")
    @ResponseWrapper(localName = "getResponse", targetNamespace = "https://adwords.google.com/api/adwords/cm/v201109", className = "com.google.api.ads.adwords.jaxws.v201109.cm.CampaignTargetServiceInterfacegetResponse")
    public CampaignTargetPage get(
        @WebParam(name = "selector", targetNamespace = "https://adwords.google.com/api/adwords/cm/v201109")
        CampaignTargetSelector selector)
        throws ApiException_Exception
    ;

    /**
     * 
     *         Mutates (sets) targets for specified campaign identified in the campaign operations.
     *         
     *         <p class="note"><b>Note:</b> When a campaign is created, its targeting
     *         options are also created. To add or remove targets, call {@code mutate} with
     *         the {@code SET} operator to update the target lists accordingly. The
     *         {@code ADD} and {@code REMOVE} operators are not supported.</p>
     *         @param operations list of operations associating targets with campaign ids.
     *         @return the updated campaign targets, not necessarily in the same order in which they came in.
     *         @throws ApiException if problems occurred while adding campaign targeting information.
     *       
     * 
     * @param operations
     * @return
     *     returns com.google.api.ads.adwords.jaxws.v201109.cm.CampaignTargetReturnValue
     * @throws ApiException_Exception
     */
    @WebMethod
    @WebResult(name = "rval", targetNamespace = "https://adwords.google.com/api/adwords/cm/v201109")
    @RequestWrapper(localName = "mutate", targetNamespace = "https://adwords.google.com/api/adwords/cm/v201109", className = "com.google.api.ads.adwords.jaxws.v201109.cm.CampaignTargetServiceInterfacemutate")
    @ResponseWrapper(localName = "mutateResponse", targetNamespace = "https://adwords.google.com/api/adwords/cm/v201109", className = "com.google.api.ads.adwords.jaxws.v201109.cm.CampaignTargetServiceInterfacemutateResponse")
    public CampaignTargetReturnValue mutate(
        @WebParam(name = "operations", targetNamespace = "https://adwords.google.com/api/adwords/cm/v201109")
        List<CampaignTargetOperation> operations)
        throws ApiException_Exception
    ;

}
